/*******************************************************************************
 * Owlets Framework
 * Copyright 2011 Logicfish Software http://logicfishsoftware.com/
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 * 
 * @author logicfish@gmail.com
 *
 ******************************************************************************/

package com.logicfishsoftware.owlet.app.rulebase;

import com.logicfishsoftware.owlet.app.Service;
import com.logicfishsoftware.owlet.app.runtime.RuntimeApplication;
 /**
  * Base class to provide an API to rulebase libraries. 
  * 
  * @author logicfish@gmail.com
  *
  */
public abstract class RulebaseRuntime<T extends RulebaseRuntime<T,U>.RulebaseAtom,U extends RuntimeApplication<T,U>.ApplicationContext> 
extends RuntimeApplication<T,U> {
	
	public abstract class RulebaseAtom extends RuntimeApplication<T,U>.ApplicationAtom {
	};
	
	public abstract class RulebaseAtomAsync extends RulebaseAtom implements Service {
	};

	public abstract class RulebaseContext extends RuntimeApplication<T,U>.ApplicationContext {
		protected abstract <K> void put(K obj);
		protected abstract <K> void update(K obj);
	};
	
//	protected abstract void fireAll(RulebaseContext context);
//	protected abstract void fireUntilHalt(RulebaseContext context);
	
}
